home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 1996 May & June / Amiga-CD 1996 #5-6.iso / demos / finaldata / fdmacros / savelayout < prev    next >
Text File  |  1996-03-22  |  4KB  |  120 lines

  1. /* ========================================================== */
  2. /* Final Data ARexx Macro.                                    */
  3. /* SaveLayout - Save column positions and widths.             */
  4. /* $VER: SaveLayout 1.0 (4.8.94)                              */
  5. /* © 1994 SoftWood, Inc.                                      */
  6. /* Use of this macro is strictly at the user's risk.          */
  7. /*                                                            */
  8. /* This macro is used in conjunction with the RestoreLayout   */
  9. /* macro. Together they will allow you to save the current    */
  10. /* column layout (positions and widths) and then at a later   */
  11. /* time restore the column layout to what is was previously.  */
  12. /* To save the current layout, your database must first be    */
  13. /* saved. Start the macro from Final Data. The current layout */
  14. /* data will be stored in a file with the same name as your   */
  15. /* database, but with ".FDLayout" appended to the end of the  */
  16. /* filename. Later, the RestoreLayout macro will look at this */
  17. /* file to restore your column layout.                        */
  18. /*                                                            */
  19. /* For those who want to know, the data for each column is    */
  20. /* saved on a single line with the following format:          */
  21. /*          columnid columnwidth\n                            */
  22. /* The column data is stored in the order that the columns    */
  23. /* appear in the database.                                    */
  24. /* ========================================================== */
  25. OPTIONS RESULTS
  26.  
  27. /* --------------------------------------------------------- */
  28. /* Get the number of columns. If 0, then exit with an error. */
  29. /* --------------------------------------------------------- */
  30. NumColumns
  31. ncols = RESULT
  32. IF ( ncols = 0 ) THEN DO
  33.    ShowMessage 1 1 '"No columns defined." "" "" "OK" "" ""'
  34.    EXIT 10
  35. END
  36.  
  37. /* -------------------------------------------------- */
  38. /* Determine the filename to save the database layout */
  39. /* information to. We'll use the existing path and    */
  40. /* filename appended with ".FDLayout". This assumes   */
  41. /* that the database has already been saved. So exit  */
  42. /* with an error if it has not been saved.            */
  43. /* -------------------------------------------------- */
  44. Filename
  45. IF ( RESULT = "" ) THEN DO
  46.    ShowMessage 1 1 '"This is an untitled database." "Please save the database" "before using this macro." "OK" "" ""'
  47.    EXIT 10
  48. END
  49.  
  50. Filename COMPLETE
  51. layoutFile = RESULT || ".FDLayout"
  52. quotedFile = '"' || layoutFile || '"'
  53.  
  54. /* -------------------------------------- */
  55. /* Does the layout file already exist?    */
  56. /* If it does, ask if we should continue. */
  57. /* -------------------------------------- */
  58. IF ( EXISTS(filename) ) THEN DO
  59.    firstLine = '"The layout file already exists."'
  60.    secondLine = '"Do you want to replace it?"'
  61.    ShowMessage 2 1 firstLine secondLine quotedFile '"Yes" "No" ""'
  62.    IF ( Result = 2 ) THEN EXIT 5
  63. END
  64.  
  65. /* -------------- */
  66. /* Open the file. */
  67. /* -------------- */
  68. IF ( OPEN('layout', layoutFile, 'Write') ) THEN DO
  69.    /* --------------- */
  70.    /* File is opened. */
  71.    /* --------------- */
  72.  
  73.    /* ----------------------------- */
  74.    /* For each column write out the */
  75.    /* columnID and columnWidth.     */
  76.    /* ----------------------------- */
  77.    DO c = 1 TO ncols
  78.       GetColumnID POSITION c
  79.       cid = RESULT
  80.       GetColumnDef cid WIDTH
  81.       cwidth = RESULT
  82.       CALL LineOut('layout', cid cwidth)
  83.    END
  84.  
  85.    /* -------------- */
  86.    /* Close the file */
  87.    /* -------------- */
  88.    CALL CLOSE('layout');
  89.  
  90. END /* End if */
  91.  
  92. ELSE DO
  93.    /* ------------------------- */
  94.    /* File could not be opened. */
  95.    /* ------------------------- */
  96.    firstLine = '"Cannot open file."'
  97.    ShowMessage 1 1 firstLine quotedFile '"" "OK" "" ""'
  98.    EXIT 10
  99. END
  100.  
  101. EXIT
  102.  
  103.  
  104. /* ============================================ */
  105. /* LineOut                                      */
  106. /* Procedure to write a line out to the file    */
  107. /* checking for errors and exiting if any found */
  108. /* ============================================ */
  109. LineOut: PROCEDURE
  110. PARSE ARG filehandle, str
  111.  
  112.    len = WRITELN( filehandle, str )
  113.    IF (len ~= LENGTH(str) + 1) THEN DO
  114.       ShowMessage 1 1 '"Error writing file!" "" "" "OK" "" ""'
  115.       CALL CLOSE(filehandle);
  116.       EXIT 10
  117.    END
  118.  
  119. RETURN
  120.